/**
 * author 文全
 */

import axios from 'axios'
import storage from './storage.server'
import { urlBase } from '../config/index'
import Event from './event'
/**
 * 封装的全局ajax请求
 */

// http request 拦截器
axios.interceptors.request.use(
  (config) => {
    const token = storage.get('token') || ''
    const locale = storage.get('locale') || 'zh_cn'
    config.headers['locale'] = locale
    if (token) {  // 判断是否存在token，如果存在的话，则每个http header都加上token
      config.headers['mw-token'] = token

    }

    return config
  },
  err => {
    return Promise.reject(err)
  })

axios.interceptors.response.use(
  (res: any) => {
    try {
      if (res.data.code == 500) {
        // 先不处理
        // alert('接口500')
      }
    } catch (err) {
      // 先不处理
    }
    return res
  },
  err => {

    if (String(err).includes('timeout')) {
      Event.emit('timeout')
    }

    return Promise.reject(err)
  })
class Http {
  constructor () {
    axios.defaults.baseURL = urlBase
    axios.defaults.timeout = 15000
  }

  /**
   * GET 请求 {es6解构赋值}
   * @param type 包含url信息
   * @param data 需要发送的参数
   * @returns {Promise}
   * @constructor
   */
  async httpGet (url: string, resData = {}) {
    // 创建一个promise对象
    try {
      let { data } = await axios.get(url, { params: resData })
      return data
    } catch (error) {
      // 先不处理
    }

  }

  /**
   * POST 请求
   * @param type Object 包含url信息
   * @param data Object 需要发送的参数
   * @returns {Promise}
   * @constructor
   */
  async httpPost (url: string, resData = {}) {
    // 创建一个promise对象

    try {
      // resData = Object.assign(resData, this.locale)
      let { data } = await axios.post(url, resData)
      return data
    } catch (error) {
      console.log(error)
    }

  }

  get locale () {
    return {
      locale: 'zh'
    }
  }

}
export default new Http()
